<?php

/**
 * salarie actions.
 *
 * @package    sopN
 * @subpackage salarie
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class salarieActions extends sfActions {

  public function executeIndex(sfWebRequest $request) {
    $this->unites_fonctionnelles = array();
    $mon_compte = false;
    
    $salaries = SalariePeer::getSalariesByUserId($this->getUser()->getGuardUser()->getPrimaryKey());
    $salarie = count($salaries) ? $salaries[0] : null;
    
    if(!$salarie instanceof Salarie)
      throw new Exception("L'utilisateur " . $this->getUser()->getGuardUser()->getUsername() . " ne possède pas de compte salarié !");

    if($this->getUser()->hasPermission("view_all")) {
      foreach(AssoSalarieUniteFonctionnellePeer::doSelect(new Criteria()) as $asso) {
        if($asso->getSalarie()->getsfGuardUser()->hasPermission('responsable_invisible'))
          continue;
        $this->unites_fonctionnelles[$asso->getUniteFonctionnelle()->getPrimaryKey()][] = $asso->getSalarie();
      }
      
      foreach(SalariePeer::getSalariesSansUf() as $salarie_nuf)
        $this->unites_fonctionnelles["Salariés sans unité fonctionnelle"][] = $salarie_nuf;
    } else {
      if($salarie->countAssoSalarieUniteFonctionnelles()) {
        /* Si un utilisateur possède un compte salarié qui est responsable d'une
         * UF, alors il a la permission de voir les comptes salarié de l'UF. */
        foreach($salarie->getAssoSalarieUniteFonctionnelles() as $asso)
          if($asso->getIsResponsable())
            foreach($asso->getUniteFonctionnelle()->getAssoSalarieUniteFonctionnellesJoinSalarie() as $asso_salarie) {
              if($asso_salarie->getSalarie()->getsfGuardUser()->hasPermission('responsable_invisible'))
                continue;
              $this->unites_fonctionnelles[$asso->getUniteFonctionnelle()->getPrimaryKey()][] = $asso_salarie->getSalarie();
            }
      }
    }
      
    if($this->getUser()->hasPermission("view_self"))
      $this->self = $salaries;
  }

}
